// let obj = {
//   name: '吴亦凡',
//   age: 33,
//   address: '北京大兴监狱'
// }

// let obj: {
//   name: string,
//   age: number,
//   address: string
// } = {
//   name: '吴亦凡',
//   age: 33,
//   address: '北京大兴监狱'
// }

// 接口  interface 用来定义对象内部的类型注解，给对象起到约束作用
// 注意 按照规范 接口名字首字母大写

// 1.定义接口
interface ObjType {
  readonly name: string, //readonly 只读属性 只能初始化时赋值 赋值后再也不可更改
  e: number,
  address: string,
  sex?: string | number //?可选属性 可有可无
  [prop: string]: any //索引签名 作用 当我们需要一个接口当中 除了必须属性 可选属性以外，还允许我们添加一个任意属性
}
//2.使用接口
let obj: ObjType = {
  name: '吴亦凡',
  age: 33,
  address: '北京大兴监狱',
  sex: 1
}
// obj.name = '李易峰'
obj.one = 111
obj.two = 222

interface ArrayType {
  name: string,
  age: number
}
let arr: ArrayType[] = [{ name: '张三', age: 222 }, { name: '张三', age: 222 }]